package com.inight.ojcodesandbox;

import com.inight.ojcodesandbox.model.ExecuteCodeRequest;
import com.inight.ojcodesandbox.model.ExecuteCodeResponse;
import org.springframework.stereotype.Component;

import java.io.File;

/**
 * java 原生代码沙箱实现方式(直接服用模版方法)
 */
@Component
public class JavaNativeCodeSandbox extends JavaCodeSandBoxTemplate {


    // 子类覆盖父类的方法，然后做增强。 这个也是多态的好处
    // 当前类再次调用这个方法时， 就会执行子类的，而不是父类的。
    // 这样就实现了既可以复用原来的代码, 又可以有自定义的内容做增强.
    @Override
    public File saveCodeToFile(String code) {
        File file = super.saveCodeToFile(code);
        System.out.println("覆盖父类方法， 增强代码");
        return file;
    }

    @Override
    public ExecuteCodeResponse executeCode(ExecuteCodeRequest executeCodeRequest) {
        // 直接调用父类的。要是增强的话， 可以在下面加代码
        return super.executeCode(executeCodeRequest);
    }
}
